02. 定义函数

Definindo funções

定义函数

函数定义示例:

def cylinder_volume(height, radius):
    pi = 3.14159
    return height * pi * radius ** 2

定义 cylinder_volume 函数后,我们可以如下所示地 调用 该函数。

cylinder_volume(10, 3)

函数定义包含几个重要部分。

函数头部

我们从函数头部开始,即函数定义的第一行。

  1. 函数头部始终以关键字 def 开始,表示这是函数定义。
  2. 然后是函数名称(在此例中是 cylinder_volume ,因为函数名是要一个单词,所以需要用_进行连接),遵循的是和变量一样的命名规范。你可以在本页面下方回顾下命名规范。
  3. 名称之后是括号,其中可能包括用英文逗号分隔的参数(在此例中是 height radius )。 形参(或实参) 是当函数被调用时作为输入传入的值,用在函数主体中。如果函数没有参数,这些括号留空。
  4. 头部始终以英文冒号 : 结束。

函数主体

函数的剩余部分包含在主题中,也就是函数完成操作的部分。

  1. 函数主体是在头部行之后缩进的代码。在此例中是定义 π 和返回体积的两行代码。
  2. 在此主体中,我们可以引用参数并定义新的变量,这些变量只能在这些缩进代码行内使用。
  3. 主体将经常包括 return 语句,用于当函数被调用时返回输出值。 return 语句包括关键字 return ,然后是经过评估以获得函数输出值的表达式。如果没有 return 语句,函数直接返回 None(例如内置 print() 函数)。

函数的命名规范

函数名称遵守和变量一样的命名规范。

  1. 仅在函数名称中使用普通字母、数字和下划线。不能有空格,需要以字母或下划线开头。
  2. 不能使用在 Python 中具有重要作用的保留字或内置标识符 ,我们将在这门课程中学习这方面的知识。要了解 python 保留字列表,请参阅 此处
  3. 尝试使用可以帮助读者了解函数作用的描述性名称。

Argumentos padrão

默认参数

我们可以向函数中添加默认参数,以便为在函数调用中未指定的参数提供默认值。

def cylinder_volume(height, radius=5):
    pi = 3.14159
    return height * pi * radius ** 2

在上述示例中,如果在函数调用中忽略了 radius ,则将该参数设为 5。如果我们调用 cylinder_volume(10) ,该函数将使用 10 作为高度,使用 5 作为半径。但是,如果调用 cylinder_volume(10, 7) ,7 将覆盖默认的值 5。

此外注意,我们按照位置向参数传递值。可以通过两种方式传递值:按照位置和按照名称。下面两个函数的效果是一样的。

cylinder_volume(10, 7)  # pass in arguments by position
cylinder_volume(height=10, radius=7)  # pass in arguments by name